﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Schema;
using System.IO;
using System.Text.RegularExpressions;

namespace GenIX
{
    public partial class MainForm : Form
    {
        // <CreateElements>
        // ======================= Создание элементов управления ===================================
        // </CreateElements>


        // <CreateDateTimePicker>
        // Построение поля с датой
        // </CreateDateTimePicker>
        private void CreateDateTimePicker(int i, bool edit, int y, string format)
        {
            try
            {
                // <CreateDateTimePicker> Создание и вывод текстовых полей c масками</CreateDateTimePicker>
                DTP[i] = new DateTimePicker();

                // <Parametrs> Параметры </Parametrs>
                if ((Regex.IsMatch(textboxText, @"^\d{2}.\d{2}.\d{4}$")) ||
                    (Regex.IsMatch(textboxText, @"^\d{2}.\d{2}.\d{4} \d{2}:\d{2}$")) ||
                    (Regex.IsMatch(textboxText, @"^\d{2}.\d{2}.\d{4} \d{2}:\d{2}:\d{2}$")))
                    DTP[i].Text = textboxText;
                DTP[i].Name = "DTP" + Convert.ToString(i);
                DTP[i].Parent = this;
                DTP[i].Enabled = edit;
                DTP[i].Location = new Point(200, y);
                DTP[i].Width = 380;
                DTP[i].BackColor = SystemColors.Control;
                DTP[i].Format = DateTimePickerFormat.Custom;
                DTP[i].CustomFormat = format;

                interfacePanel.Controls.Add(DTP[i]);
            }

            // <FormatException> Перехват сообщения об исключениях неверного формата даты </FormatException>
            catch (FormatException e)
            {
                MessageBox.Show(e.Message, "Неверный формат даты", MessageBoxButtons.OK, MessageBoxIcon.Error);       
            }


            // <CreateLabel> Создание и вывод меток </CreateLabel>
            Lbl[i] = new Label();

            // <Parametrs> Параметры </Parametrs>
            Lbl[i].Text = labelText;
            Lbl[i].Name = "Lbl" + Convert.ToString(i);
            Lbl[i].Parent = this;
            Lbl[i].Enabled = true;
            Lbl[i].Location = new Point(0, y);
            Lbl[i].Width = 190;
            Lbl[i].BackColor = SystemColors.Control;

            interfacePanel.Controls.Add(Lbl[i]);
        }


        // <CreateMaskedTextBox>
        // Построение поля с маской 
        // </CreateMaskedTextBox>
        private void CreateMaskedTextBox(int i, bool edit, int y)
        {
            // <CreateMask> Создание и вывод текстовых полей c масками</CreateMask>
            MskTxtB[i] = new MaskedTextBox();

            // <Parametrs> Параметры </Parametrs>
            MskTxtB[i].Text = textboxText;
            MskTxtB[i].Name = "MskTxtB" + Convert.ToString(i);
            MskTxtB[i].Parent = this;
            MskTxtB[i].Enabled = edit;
            MskTxtB[i].Mask = "00/00/0000";
            MskTxtB[i].Location = new Point(200, y);
            MskTxtB[i].Width = 380;
            MskTxtB[i].BackColor = SystemColors.Control;

            interfacePanel.Controls.Add(MskTxtB[i]);


            // <CreateLabel> Создание и вывод меток </CreateLabel>
            Lbl[i] = new Label();

            // <Parametrs> Параметры </Parametrs>
            Lbl[i].Text = labelText;
            Lbl[i].Name = "Lbl" + Convert.ToString(i);
            Lbl[i].Parent = this;
            Lbl[i].Enabled = true;
            Lbl[i].Location = new Point(0, y);
            Lbl[i].Width = 190;
            Lbl[i].BackColor = SystemColors.Control;

            interfacePanel.Controls.Add(Lbl[i]);
        }


        // <CreateCombo>
        // Построение списка 
        // </CreateCombo>
        private void CreateComboBox(int i, bool edit, int y, string ValList, bool Drop)
        {
            // <CreateComboBox> Создание и вывод текстовых полей </CreateComboBox>
            CmbB[i] = new ComboBox();

            // <Parametrs> Параметры </Parametrs>
            CmbB[i].Text = textboxText;
            CmbB[i].Name = ValList;
            CmbB[i].Parent = this;
            CmbB[i].Enabled = edit;
            CmbB[i].Location = new Point(200, y);
            CmbB[i].Width = 380;
            CmbB[i].BackColor = SystemColors.Control;
            if (Drop)
            CmbB[i].DropDownStyle = ComboBoxStyle.DropDownList;
           
            interfacePanel.Controls.Add(CmbB[i]);
            Styleform.SelectElement(this.interfacePanel, Styleform.choseStyleName);
            CmbB[i].SelectedItem = textboxText;

            // <CreateLabel> Создание и вывод меток </CreateLabel>
            Lbl[i] = new Label();

            // <Parametrs> Параметры </Parametrs>
            Lbl[i].Text = labelText;
            Lbl[i].Name = "Lbl" + Convert.ToString(i);
            Lbl[i].Parent = this;
            Lbl[i].Enabled = true;
            Lbl[i].Location = new Point(0, y);
            Lbl[i].Width = 190;
            Lbl[i].BackColor = SystemColors.Control;

            interfacePanel.Controls.Add(Lbl[i]);           
        }


        // <CreateTextBox>
        // Построение текстового поля
        // </CreateTextBox>
        private void CreateTextBox(int i, bool edit, int y)
        {
            // <CreateTextBox> Создание и вывод текстовых полей </CreateTextBox>
            TxtB[i] = new TextBox();

            // <Parametrs> Параметры </Parametrs>
            TxtB[i].Text = textboxText;
            TxtB[i].Name = "TxtB" + Convert.ToString(i);
            TxtB[i].Parent = this;
            TxtB[i].Enabled = edit;
            TxtB[i].Location = new Point(200, y);
            TxtB[i].Width = 380;
            TxtB[i].BackColor = SystemColors.Control;

            interfacePanel.Controls.Add(TxtB[i]);


            // <CreateLabel> Создание и вывод меток </CreateLabel>
            Lbl[i] = new Label();

            // <Parametrs> Параметры </Parametrs>
            Lbl[i].Text = labelText;
            Lbl[i].Name = "Lbl" + Convert.ToString(i);
            Lbl[i].Parent = this;
            Lbl[i].Enabled = true;
            Lbl[i].Location = new Point(0, y);
            Lbl[i].Width = 190;
            Lbl[i].BackColor = SystemColors.Control;

            interfacePanel.Controls.Add(Lbl[i]);
        }

    }
}